"""
点击链接 打开了新窗口 要在新窗口里定位元素， 一定要切换窗口。
driver.window_handles ： 拿到所有窗口句柄 放在列表里。
  - 句柄唯一的 但是是变化  不能直接用句柄本身去做窗口切换
  - 既然是放在列表里，可以用列表的索引去切换 ， 最新窗口一定是最后一个：[-1]

"""
from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep

driver = webdriver.Chrome()
driver.maximize_window()
driver.get('https://www.baidu.com')


# 找到贴吧的链接
driver.find_element(By.LINK_TEXT,"新闻").click()
driver.find_element(By.LINK_TEXT,"图片").click()
driver.find_element(By.LINK_TEXT,"贴吧").click()

# 打开新的窗口之后 获取所有句柄
wins = driver.window_handles
print(wins)

# driver.switch_to.window(wins[-1]) # 切换到最新的窗口
# driver.switch_to.window(wins[-2]) # 切换到最新的窗口,用索引且会有问题。可以采用列表遍历
# for循环遍历一下列表 拿到每一个句柄 然后切换  判断一下 url title
for win in wins:
    if driver.current_url == "https://image.baidu.com/": # 判断当前的页面是否为想要的url地址
        break
    else:
        driver.switch_to.window(win)  # 如果不是 继续切换

# 切换的不是最新的一个 -- 中间的图片
driver.find_element(By.ID,"kw").send_keys("图片")

# 在贴吧的页面里输入文本 搜索 test == 切换成功之后，就看可以在新的页面里进行元素操作了
# driver.find_element(By.NAME,"kw1").send_keys("test贴吧")

# 总结
# 先统计句柄 放在 列表，按照列表索引取最后一个句柄。
# 如果取得不是最新的 或者是中间的，那么就需要for循环编列句柄列表 判断driver.current_url == 目标地址。
